<?php

/**
 * Louder Cache
 *
 * LICENSE
 *
 * This source file is subject to the New BSD License that is bundled
 * with this package in the file docs/LICENSE.txt.
 *
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to info@loudertechnology.com so we can send you a copy immediately.
 *
 * @category Louder
 * @package CacheConfiguration
 * @copyright Copyright (c) 2005-2009 Andres Felipe Gutierrez (gutierrezandresfelipe at gmail.com)
 * @license New BSD License
 */

/**
 * Configuracion de una referencia de Cache
 *
 * @category Louder
 * @package CacheConfiguration
 * @copyright Copyright (c) 2005-2009 Andres Felipe Gutierrez (gutierrezandresfelipe at gmail.com)
 * @license New BSD License
 */
class CacheConfiguration {

	/**
	 * Host donde esta ubicado el Louder Cache Server
	 *
	 * @var string
	 */
	private $_serverURL;

	/**
	 * Usuario con el que se autentica en el servidor
	 *
	 * @var string
	 */
	private $_username;

	/**
	 * Password con el que se autentica en el servidor
	 *
	 * @var string
	 */
	private $_password;

	/**
	 * Nivel de isolacion
	 *
	 * @var int
	 */
	private $_isolationLevel;

	/**
	 * Modo de cacheo
	 *
	 * @var int
	 */
	private $_cacheMode;

	/**
	 * Tiempo maximo que puede tardar la adquision del bloqueo
	 *
	 * @var int
	 */
	private $_adquisitionLockTimeout = 30;

	/**
	 * Habilitar compresion cliente/servidor
	 *
	 * @var boolean
	 */
	private $_compression = false;

	/**
	 * Establece el nivel de isolacion
	 *
	 * @param int $isolationLevel
	 */
	public function setIsolationLevel($isolationLevel){
		$this->_isolationLevel = $isolationLevel;
	}

	/**
	 * Establece el Modo de cacheo
	 *
	 * @param int $cacheMode
	 */
	public function setCacheMode($cacheMode){
		$this->_cacheMode = $cacheMode;
	}

	/**
	 * Establece el tiempo maximo de adquisicion de bloqueo
	 *
	 * @param int $timeout
	 */
	public function setLockAdquisitionTimeout($timeout){
		$this->_adquisitionLockTimeout = (int) $timeout;
	}

	/**
	 * Establece el usuario con el que se autentica en el servidor
	 *
	 * @param string $username
	 */
	public function setUsername($username){
		$this->_username = (string) $username;
	}

	/**
	 * Devuelve el nombre del usuario de autenticacion
	 *
	 * @return string
	 */
	public function getUsername(){
		return $this->_username;
	}

	/**
	 * Establece el password con el que se autentica en el servidor
	 *
	 * @param string $password
	 */
	public function setPassword($password){
		$this->_password = (string) $password;
	}

	/**
	 * Devuelve el nombre del usuario de autenticacion
	 *
	 * @return string
	 */
	public function getPassword(){
		return $this->_password;
	}

	/**
	 * Establece la URL del servidor de cacheo
	 *
	 * @param string $password
	 */
	public function setServerURL($serverURL){
		$this->_serverURL = (string) $serverURL;
	}

	/**
	 * Devuelve la URL del servidor de cacheo
	 *
	 * @return string
	 */
	public function getServerURL(){
		return $this->_serverURL;
	}

	/**
	 * Establece si se empleara compresion cliente/servidor
	 *
	 * @param boolean $compression
	 */
	public function setCompression($compression){
		$this->_compression = (bool) $compression;
	}

	/**
	 * Crear la configuracion desde un archivo XML
	 *
	 * @param string $xmlFile
	 */
	public static function loadFromXML($xmlFile){

	}

}